//package com.olivia.sdk.config;
//
//import org.kie.api.KieBase;
//import org.kie.api.KieServices;
//import org.kie.api.builder.KieBuilder;
//import org.kie.api.builder.KieFileSystem;
//import org.kie.api.builder.KieRepository;
//import org.kie.api.runtime.KieContainer;
//import org.kie.internal.io.ResourceFactory;
//import org.kie.spring.KModuleBeanFactoryPostProcessor;
//import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.core.io.Resource;
//import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
//import org.springframework.core.io.support.ResourcePatternResolver;
//
//import java.io.IOException;
//
/// **
// * @author lixiang
// * @description Drools规则引擎配置类
// */
//@Configuration
//public class DroolsConfig {
//
//  /**
//   * 定义规则路径
//   */
//  private static final String RULES_PATH = "rules/";
//
//  private final KieServices kieServices = KieServices.Factory.get();
//
//  /**
//   * 获取规则文件
//   *
//   * @return
//   * @throws IOException
//   */
//  @Bean()
//  @ConditionalOnMissingBean
//  public KieFileSystem kieFileSystem() throws IOException {
//
//    KieFileSystem kieFileSystem = kieServices.newKieFileSystem();
//    ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();
//    Resource[] files = resourcePatternResolver.getResources("classpath*:" + RULES_PATH + "*.*");
//    String path;
//    for (Resource file : files) {
//      path = RULES_PATH + file.getFilename();
//      kieFileSystem.write(ResourceFactory.newClassPathResource(path, "UTF-8"));
//    }
//    return kieFileSystem;
//  }
//
//  /**
//   * 创建Kie容器
//   *
//   * @return
//   * @throws IOException
//   */
//  @Bean
//  @ConditionalOnMissingBean
//  public KieContainer kieContainer(KieFileSystem kieFileSystem) throws IOException {
//    KieRepository kieRepository = kieServices.getRepository();
//    kieRepository.addKieModule(kieRepository::getDefaultReleaseId);
//    KieBuilder kieBuilder = kieServices.newKieBuilder(kieFileSystem);
//    kieBuilder.buildAll();
//    return kieServices.newKieContainer(kieRepository.getDefaultReleaseId());
//  }
//
//  @Bean
//  @ConditionalOnMissingBean
//  public KieBase kieBase(KieContainer kieContainer) throws IOException {
//    return kieContainer.getKieBase();
//  }
//
//  @Bean
//  @ConditionalOnMissingBean
//  public KModuleBeanFactoryPostProcessor kiePostProcessor() {
//    return new KModuleBeanFactoryPostProcessor();
//  }
//}
